package com.mapper;

import com.entity.UserCoupon;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @InterfaceName UserCoupon
 * @Description 用户优惠券持久层接口
 * @Author Kx
 * @Date 2025/5/29 10:49
 * @Version 1.0
 */
public interface UserCouponMapper {
    /**
     * @author: kx
     * @date: 2025/5/29 10:52
     * @param userCoupon : 用户优惠券信息
     * @description: 添加用户优惠券
    */
    void addUserCoupon(UserCoupon userCoupon);

    /**
     * @author: kx
     * @date: 2025/5/29 11:44
     * @param userId : 用户id
     * @return java.util.List<com.entity.UserCoupon>
     * @description: 根据用户编号查询该用户的所有优惠券信息
    */
    List<UserCoupon> findByUserId(Integer userId);

    /**
     * @author: kx
     * @date: 2025/5/29 15:27
     * @param userCoupon : 用户优惠券信息
     * @description: 修改用户优惠券信息
    */
    void updateUserCoupon(UserCoupon userCoupon);

    /**
     * @author: kx
     * @date: 2025/5/29 19:59
     * @param now : 当前时间
     * @return java.util.List<java.lang.Long>
     * @description: 查询所有需要更新的过期优惠券id
    */
    List<Long> selectExpiredCouponIds(@Param("now") LocalDateTime now);

    /**
     * @author: kx
     * @date: 2025/5/29 20:03
     * @param couponIds : 优惠券id
     * @param usedTime : 使用时间
     * @description: 批量修改优惠券过期状态
    */
    void batchUpdateStatus(@Param("couponIds") List<Long> couponIds, @Param("usedTime") LocalDateTime usedTime);
}
